Hi,
aktuell arbeite ich, privat, an einer kleinen Blog-engine in Python 3.5 mit den Libraries 'asyncio' und 'aiohttp'.
Bisher sehen meine Imports immer so aus wie im folgenden Beispiel.
|
C-/C++-Quelltext
|
1
|
from luther.helper import requires_authentication
|
Meine Projektstruktur sieht etwa so:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
|
\luther (<- git root)
__main__.py
luther\
__init__.py
\helper
__init__.py
authentication.py
|
Wenn ich jetzt im Terminal 'python3 .' eingebe, führt er automatisch '__main__.py' aus.
So kann ich direkt auch auf alle Submodule (z.B. 'luther.helper') zugreifen.
Wenn ich aber versuche mein Projekt als .ZIP-Datei zu bundeln, dann beschwert sich der Interpreter plötzlich,
dass er die Imports nicht findet oder, dass er den 'Namen' 'require_authentication' nicht laden kann.
Allgemein sind die Fehlermeldung sehr nichts-sagend.
Ich habe bereits versucht, das .ZIP-Bundle als Modul dynamisch zur Laufzeit im PYTHONPATH einzubinden ohne jeglichen erfolg.
Genutzt habe ich dafür Folgendes:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
|
# Code ad-hoc aus dem Kopf geschrieben...
import os.path
import sys
bundle_path = os.path.directory(os.path.realpath(__file__))
sys.path.append(bundle_path)
|
Alternative habe ich auch relative-imports genutzt, welche nun aber auch nicht funktionieren.
TL;DR / Frage
Hat jemand schon erfolgreich ein Programm, welches in Python geschrieben wurde, als ausführbare .ZIP-Datei gebündelt?
Wenn ja, gibt es Besonderheiten die man beim Import-System beachten muss?
LG Julien